/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package client;

import core.Graph;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.rmi.Naming;
import java.rmi.NotBoundException;

/**
 *
 * @author Alexey Chirkov
 */
public class Client {

    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println("Error:Неверное число параметров");
            return;
        }
        try {
            // Поиск сервиса
            System.out.println("Поиск сервиса...");
            System.setProperty("java.security.policy", "client.policy");
            Graph processor = (Graph) Naming.lookup("rmi://127.0.0.1:1099/Graph");
            // Загрузка картинки
            System.out.println("Загрузка картинки...");
            byte[] image;
            try (InputStream is = new FileInputStream(new File(args[0]))) {
                image = new byte[is.available()];
                is.read(image);
            }
            // Использование сервиса
            System.out.println("Обращение к сервису...");
            byte[] result;
            result = processor.execute(image);
            // Сохранение результата
            System.out.println("Сохранение результата...");
            try (OutputStream os = new FileOutputStream(new File(args[1]))) {
                os.write(result);
            }
            // Финиш
            System.out.println("Задача успешно завершена.");
        } catch (NotBoundException | IOException e) {
            System.out.println("Error:");
            e.printStackTrace();
        }
    }
}
